package com.it.conterller;

/*
* TODO redis 持久化机制
* */
public class Persistence {
    /*
    * 1、什么是持久化？
    *       答：将数据保存在硬盘上
    *       作用：防止数据在断电的情况下丢失。
    *       总结：redis将内存中数据，写在硬盘文件上。服务器关闭，电脑重启数据也不会丢失。
    *
    * 2、redis 的持久化方式
    *       RDB、AOF
    *
    * 3、RDB：默认、快照方式
    *       【说明】：默认的持久化方式，以二进制的方式将数据写入文件中。每隔一段时间写入一次
    *
    *       【缺点】：不能完全避免数据丢失
    *               会导致服务器暂停的现象
    *
    *       【优点】：方便备份与恢复
    *               启动效率更高
    *               性能最大化
    *
    *       【执行策略】：
    *
    * 4、AOF：持久化
    *       【说明】：AOF会将用户执行的每一个命令都放在一个文件中，当遇到不可控事件、重启的时候
    *               会将每个命令重新执行一遍
    *
    *       【开启AOF】：AOF默认是关闭的、如果要开启、首先要开启AOF模式
    *                  appendonly   yes/no
    *
    *       【AOF的机制】：
    *               everysec：每秒记录
    *               always：每修改记录
    *               no：完全依赖操作系统，性能最好，持久化无法保证
    *       【优点】：
    *               会保证数据的绝对安全、因为所有命令都保存在一个文件里
    *       【缺点】：
    *               运行效率比RDB更慢：根据同步策略的不同，AOF在运行效率上往往会慢于RDB。
    *               文件比RDB更大：对于相同数量的数据集而言，AOF文件通常要大于RDB文件。
    *
    * 5、总结：在企业开发中两种持久化机制会配合着使用
    * 5.1、为什么会有持久化
    *        因为redis本身是一个内存型数据库、不能保证数据的绝对安全、就有持久化方案
    *        将内存保存在硬盘上这样能保证数据安全
    * 5.2、RDB对比AOF
    *      RDB是默认方式、底层采用多线程方式、可能会造成卡顿、但不能保证数据的绝对安全、效率高
    *      AOF是将用户的每个命令都保存在一个AOF文件中、可以保证数据的绝对安全、但效率比RDB低
    * */
}
